<?xml version="1.0" encoding="UTF-8"?>
<doc>
<title>for 语句</title>

<para>
<ptitle>for 语句</ptitle>
　<tt>for</tt> 语句和 <tt>while</tt> 语句相似，但更为复杂。<r/>
　语法如下：<r/>
<tt>
for(第一节;第二节;第三节)
	语句或语句块
</tt>
<r/>
　在这里，第一节为进入循环之前想要执行的语句。在这里可以定义变量，在这里定义的变量仅在循环中有效 ( 循环结束后将被删除 )。也可以省略本节。（译者：一般此处为循环变量的初始化）<r/>
<r/>
　第二节是条件表达式。当此条件表达式的值为 <tt>true</tt> 时，语句或语句块将被循环（继续）执行。如果省略本节，条件表达式将被认为总是真（死循环）。<r/>
<r/>
　第三节里的语句将在每次循环结束时执行（一般为递增/递减循环变量）。此节可省略，每次循环后将不执行任何语句。<r/>
<r/>
　运行时实际的行为为：<r/>
(1) 首先，执行第一节<r/>
(2) 判断第二节的条件是否为假，是的话语句或语句块将不予执行，直接结束循环<r/>
(3) 执行语句或语句块<r/>
(4) 执行第三节<r/>
(5) 判断第二节的条件是否为假，是的话跳出循环<r/>
(6) 转回到(3) <r/>
<r/>
　在语句块中遇到 <tt><kw>break</kw></tt> 语句的话，就在 break 语句的位置跳出循环。遇到 <tt><kw>continue</kw></tt> 语句的话，跳到(4) （直接转入下一次循环）。<r/>
<r/>
<example>
	var i,a=1;<r/>
	for(i=1;i&lt;5;i++)<r/>
	{<r/>
		a*=i;<r/>
	}<r/>
<r/>
	var i;<r/>
	for(i=0;i&lt;10;i++)<r/>
	{<r/>
		if(obj[i]==0) continue; // 即使 continue， i++ 也会执行<r/>
		if(obj[i]==1) break; // 遇到 break 就当场退出循环<r/>
		func(obj[i]);<r/>
	}<r/>
</example>
</para>
</doc>